The classification of network data flows on the Internet backbone has helped provide an insight into the trends of network usage over time based on applications, devices, geographies, and network types. Such efforts to study and control the network usage behavior relate to and are often aggregated over a large number of users on the Internet. Current computing devices, however, do not provide fine-grained visibility and control of network usage patterns on individuals' computing device where the network data flows originate.
There has been an exponential growth in the number of Internet connected devices in the past decade. For example, mobile devices, such as cellular telephones, tablet computers, laptops, etc., are increasingly using wireless networks to send and receive data. In the past, wireless network providers allowed unlimited data plans that charged a flat rate for sending and receiving data over the wireless network. The explosive growth in the data transmitted over the wireless network by mobile devices has led to the replacement of unlimited data plans with pay-per-use plans. These pay-per-use plans require that the users of the mobile devices pay by bandwidth used, for example, by the rate for GigaBytes (GB) per Month for typical cellular telephone plans, and the rate for MegaBytes (MB)/Hour for WiFi hotspots. This move towards pay-per-use plans has adversely affected users because of the overage charges that are incurred when a user unexpectedly exceeds the monthly quota of download and upload limits. Similarly, wired network providers may also offer plans which include quotas on network data usage.
More and more applications, e.g. social networking, online gaming, news/weather, used by mobile devices rely on sending and receiving data over the wireless networks. Some applications may cause excessive usage of the network, and, thus, cause the user to incur large and sometimes unexpected charges. Some governments are imposing rules that require wireless network providers to warn the user when such limits are being approached or exceeded. But from the user's perspective, it is not clear which application or feature of the application is causing the data usage in the wireless network.
The problem of attributing the data usage of an application is further complicated by the fact that sometimes separate applications, e.g. a mediaserver, download manager, or the operating system (OS) on the mobile device provide a network data exchange service to the application. To correctly account for data usage by the application, it becomes important to correctly attribute data usage to the application requesting the network data exchange service, and not the separate application providing the network data exchange service. Likewise, to control data usage, limits need to be imposed on the application requesting the network data exchange service, and not the separate application providing the network data exchange service.
Conversely, from an application developer's point of view, it is important to profile the data usage of their application. Because data exchanged over the network has an associated overhead in terms of the system setup costs (e.g. battery and cpu usage) and protocol overheads at each layer of the networking stack (e.g. hypertext transfer session (HTTP) session, transmission control protocol (TCP) handshake, and transmission control protocol/internet protocol (TCP/IP) headers for each packet), the ability to profile, control, and adapt the behavior of an application based on a data usage can be extremely useful for application developers. Applications, however, can themselves not determine how much data they are using, as the payload they want to transfer actually incurs an overhead caused by the protocols used. For example, some applications will request a secure HTTP (HTTPS) connection to a server, but the applications cannot determine how much extra data is used to establish a secure connection. Likewise, applications will use a connection for different types of transfers which don't all have the same importance, for example, speculatively pre-fetching the attachments of unread emails versus getting the actual subject lines needed to notify the user of an available email. In all these cases, it is difficult for the developer to know which parts of the application need to avoid costly traffic, and difficult for the end user to apply limitations on specific portions of an application's traffic.
Some OSes, e.g. Unix and Linux derived OSes, offer network filtering and quota handling at a coarse level. The OSes allow determining on specific networking interfaces, set quota limits that cut off traffic on the interfaces, allow filtering specific users, and specific protocols. Additionally, on mobile devices, some tools exist that will determine data usage globally for all applications as a whole. Data usage selecting/notifying apps can then disable access to the network for all applications when a certain quota is exceeded by all the applications combined. But, none of the these tools and applications are able to distinguish which application or part of an application is causing the data usage, and when those applications are using services like Download Managers. Due to this ambiguity, tools and applications cannot attribute the data usage to a specific application or parts of the applications. Accordingly, it impossible to set a quota on a specific application and on specific parts of the applications.
This inability to attribute network data usage exists for any type of computing device running applications whether mobile computing devices or other types of computing devices such as a desktop computer, a set-top box, a gaming console, etc. Likewise, the need to determine data usage can apply to any type of computing device and to any network whether wireless or wired.
Accordingly, there is a need for determining, controlling, adapting, and reporting data usage for specific application and features of applications that are running on computing devices and exchanging data with networks.